home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh -e
- #
- # battery: print the state of the battery
- # Copyright (C) 2009 Raphaël Pinson.
- #
- # Authors: Raphaël Pinson <raphink@ubuntu.com>
- # Dustin Kirkland <kirkland@canonical.com>
- #
- # This program is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation, version 3 of the License.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
- search () {
- local str expr
- str="$1"
- expr="$2"
- echo "$str" | sed -n "s/${expr}/\1/p"
- }
-
-
- if [ "$1" = "--detail" ]; then
- for bat in $(ls /proc/acpi/battery); do
- cat "/proc/acpi/battery/$bat/info"
- cat "/proc/acpi/battery/$bat/state"
- done
- exit 0
- fi
-
- for bat in $(ls /proc/acpi/battery); do
- # make sure that this battery is present
- infofile=$(cat "/proc/acpi/battery/$bat/info")
- present=$(search "$infofile" "present: *\(.*\)")
- [ "${present}" = "no" ] && continue
-
- # obtain full and remaining battery values
- statefile=$(cat "/proc/acpi/battery/$bat/state")
- full=$(search "$infofile" "last full capacity: *\(.*\) m[AW]h")
- rem=$(search "$statefile" "remaining capacity: *\(.*\) m[AW]h")
-
- percent=$( echo "$rem" "$full" | awk '{printf "%.0f", 100*$1/$2}')
- if [ "$percent" -lt 33 ]; then
- per_color="Rk"
- elif [ "$percent" -lt 67 ]; then
- per_color="Yk"
- else
- per_color="Gk"
- fi
- percent="$percent%"
-
- state=$(search "$statefile" "charging state: *\(.*\)")
- case $state in
- charging)
- sign="+"
- ;;
- discharging)
- sign="-"
- ;;
- charged)
- sign="="
- percent=
- ;;
- *)
- sign="$state"
- ;;
- esac
- printf "\005{=b %s}%s\005{-}\005{= %s}|%s|\005{-} " "$per_color" "$percent" "$per_color" "$sign"
- break
- done
-